package domena;

import java.util.Date;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;

import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

@Entity
@Table(name="LEKTORZY", uniqueConstraints = {
		@UniqueConstraint(columnNames = "PESEL")})

public class Lektor {

	private long id;
	private String imie;
	public String nazwisko;
	private String ulica;
	private String  dom;
	private String kod;
	private String miasto;
	private String pesel;
	private Date dataUrodzenia;
	private long telefon;
	private String mail;
	private String panstwo;
	private String jezyk;
	private String grupa;
	private double stawka;
	private int godziny;
	private String about;
	private Ksiegowosc ksiegowosc;
	private Set<Uzytkownik> uzytkownik = new HashSet<Uzytkownik>(
			0);
	private Set<Ocena> ocena = new HashSet<Ocena>(
			0);
	private Set<Przypomnienie> przypomnienie = new HashSet<Przypomnienie>(
			0);
	
	@Id
	@Column(name="ID_LEKTORA" , unique = true, nullable = true)
	@GeneratedValue(strategy = IDENTITY)
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "KSIEGOWOSC_ID", nullable = true)
	public Ksiegowosc getKsiegowosc() {
		return this.ksiegowosc;
	}
 
	public void setKsiegowosc(Ksiegowosc ksiegowosc) {
		this.ksiegowosc = ksiegowosc;
	}
	@Column(name="IMIE", length=20)
	public String getImie() {
		return imie;
	}
	public void setImie(String imie) {
		this.imie = imie;
	}
	@Column(name="NAZWISKO", length=30)
	public String getNazwisko() {
		return nazwisko;
	}
	public void setNazwisko(String nazwisko) {
		this.nazwisko = nazwisko;
	}
	
	@Column(name="ULICA", length=30)
	public String getUlica() {
		return ulica;
	}
	public void setUlica(String ulica) {
		this.ulica = ulica;
	}
	@Column(name="DOM", length=5)
	public String getDom() {
		return dom;
	}
	public void setDom(String dom) {
		this.dom = dom;
	}
	@Column(name="KOD" , length=6)
	public String getKod() {
		return kod;
	}
	public void setKod(String kod) {
		this.kod = kod;
	}
	@Column(name="MIASTO", length=25)
	public String getMiasto() {
		return miasto;
	}
	public void setMiasto(String miasto) {
		this.miasto = miasto;
	}
	@Column(name="PANSTWO", length=20)
	public String getPanstwo() {
		return panstwo;
	}
	public void setPanstwo(String panstwo) {
		this.panstwo = panstwo;
	}
	@Column(name="JEZYK", length=15)
	public String getJezyk() {
		return jezyk;
	}
	public void setJezyk(String jezyk) {
		this.jezyk = jezyk;
	}
	@Column(name="GRUPA")
	public String getGrupa() {
		return grupa;
	}
	public void setGrupa(String grupa) {
		this.grupa = grupa;
	}
	@Column(name="STAWKA")
	public double getStawka() {
		return stawka;
	}
	public void setStawka(double stawka) {
		this.stawka = stawka;
	}
	@Column(name="GODZINY")
	public int getGodziny() {
		return godziny;
	}
	public void setGodziny(int godziny) {
		this.godziny = godziny;
	}
	
	@Column(name="OSOBIE")
	public String getAbout() {
		return about;
	}
	public void setAbout(String about) {
		this.about = about;
	}
	@Column(name="PESEL", length=11)
	public String getPesel() {
		return pesel;
	}
	public void setPesel(String pesel) {
		this.pesel = pesel;
	}
	@Column(name="DATAURODZENIA")
	public Date getDataUrodzenia() {
		return dataUrodzenia;
	}
	public void setDataUrodzenia(Date dataUrodzenia) {
		this.dataUrodzenia = dataUrodzenia;
	}
	@Column(name="NRTELEFONU", length=10)
	public long getTelefon() {
		return telefon;
	}
	public void setTelefon(long telefon) {
		this.telefon = telefon;
	}
	@Column(name="ADRESMAILOWY", length=45)
	public String getMail() {
		return mail;
	}
	public void setMail(String mail) {
		this.mail = mail;
	}	
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "lektor")
	public Set<Uzytkownik> getUzytkownik() {
		return this.uzytkownik;
	}
 
	public void setUzytkownik(Set<Uzytkownik> uzytkownik) {
		this.uzytkownik = uzytkownik;
	}
	
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "lektor")
	public Set<Ocena> getOcena() {
		return this.ocena;
	}
 
	public void setOcena(Set<Ocena> ocena) {
		this.ocena = ocena;
	}
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "lektor")
	public Set<Przypomnienie> getPrzypomnienie() {
		return this.przypomnienie;
	}
 
	public void setPrzypomnienie(Set<Przypomnienie> przypomnienie) {
		this.przypomnienie = przypomnienie;
	}
}
